package Sistema;

import java.util.ArrayList;

import Excepcion.EstacionInalcanzableException;
import Excepcion.EstacionInexistenteException;

public abstract class Estacion {
	
	protected String nombre;
	protected ArrayList<Maquina> maquinasEstacionadas;
	protected RedVial redVial;
	
	/**Contructos de Estacion, recibe el nombre y la redVial a la que pertenece
	 * @param nombre
	 * @param redVial
	 */
	public Estacion(String nombre, RedVial redVial) {
		this.nombre = nombre;
		this.redVial = redVial ;
		maquinasEstacionadas = new ArrayList<Maquina>();
	}
	
	/**setea el nombre de la estacion
	 * @return
	 */
	public String getNombre() {
		return nombre;
	}
	
	/**almacena una maquina en la lista maquinasEstacionadas
	 * @param maquina
	 */
	public void estacionarMaquina(Maquina maquina) {
		maquinasEstacionadas.add(maquina);
	}
	
	/**elimina una maquina de la lista de maquinasEstacionada
	 * @param nombre
	 */
	public void retirarMaquina(String nombre) {
		for(int i =0; i<maquinasEstacionadas.size(); i++){
			if(maquinasEstacionadas.get(i).getNombre().equals(nombre)){
				maquinasEstacionadas.remove(i);
			}
			
		}
		
	}
	
	public abstract boolean equals(Object objeto);
		
	/**retorna true o false segun corresponda si la maquina recibida como parametro esta o no en la lista de maquinasEstacionadas
	 * @param nombre
	 * @return
	 */
	public boolean estaEstacionadaMaquina(String nombre) {
		for (Maquina maquina : maquinasEstacionadas) {
			if (maquina.getNombre().equals(nombre)) {
				return true;
			}
		}
		return false;
	}

	public ArrayList<Maquina> getMaquinasEstacionadas() {
		return maquinasEstacionadas;
	}
	
	
}